package com.ygxsk.carhome.js;

import android.webkit.JavascriptInterface;

import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.LogUtils;
import com.ygxsk.carhome.constant.ConstantSign;
import com.ygxsk.carhome.dsbridge.CompletionHandler;
import com.ygxsk.carhome.response.SignatureWebBean;

import org.json.JSONObject;

/**
 * Created by du on 16/12/31.
 */

public class JsApi {

//    @JavascriptInterface
//    public String testSyn(Object msg) {
//        return msg + "［syn call0000000］";
//    }

    //2000 成功
    //2001 失败
    private JsApiListener jsApiListener;

    public JsApi(JsApiListener jsApiListener) {
        this.jsApiListener = jsApiListener;
    }

    //控制webview的顶部状态栏是隐藏或者展示
    @JavascriptInterface
    public void signatureCallback(Object msg, CompletionHandler<String> handler) {

        try {
            //do
            JSONObject jsonObject = (JSONObject) msg;
            String nomalString = jsonObject.toString();

            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--nomalString--msg-->" + nomalString);
            //itchen-->text--nomalString--msg-->{"type":2,"refreshflag":1}

            SignatureWebBean signatureWebBean = JSON.parseObject(nomalString, SignatureWebBean.class);

            LogUtils.json(ConstantSign.LOGCAT_NOMAL + "收到的电子签章的约定--事件的json-->", signatureWebBean);

            if (jsApiListener != null) {
                jsApiListener.signatureCallback(signatureWebBean, handler);
            }

        } catch (Exception e) {
            //catch
            e.printStackTrace();
        }

    }

//    //控制webview的返回
//    @JavascriptInterface
//    public void setToolbarBackClick(Object msg, CompletionHandler<String> handler) {
//
//        // ToolBarBackBean
//        // type 控制webview返回 1正常返回 2强制关闭
//        // refreshflag   2是刷新 ，1是不管
//
//        try {
//            //do
//            if (msg != null) {
//
//                JSONObject jsonObject = (JSONObject) msg;
//
//                if (jsonObject != null) {
//
//                    String nomalString = jsonObject.toString();
//
//                    LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--nomalString--msg-->" + nomalString);
//                    //itchen-->text--nomalString--msg-->{"type":2,"refreshflag":1}
//
//                    ToolBarBackBean toolBarBackBean = JSON.parseObject(nomalString, ToolBarBackBean.class);
//                    LogUtils.json(ConstantSign.LOGCAT_NOMAL + "标题事件的json-->", toolBarBackBean);
//
//                    if (jsApiListener != null) {
//                        jsApiListener.setToolbarBackClick(toolBarBackBean, handler);
//                    }
//                }
//
//            }
//
//
//        } catch (Exception e) {
//            //catch
//            e.printStackTrace();
//        }
//    }

//    //重新打开一个webView使用新开一个，这是【右上角的-点击事件的能力】
//    @JavascriptInterface
//    public void funOpenWeb(Object msg, CompletionHandler<String> handler) {
//
//        try {
//
//            //do
//            JSONObject jsonObject = (JSONObject) msg;
//            String url_address = jsonObject.getString(Parameterkey.url);
//
////            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--url_address--msg-->" + url_address);
//
//            if (jsApiListener != null) {
//                jsApiListener.funOpenNewWebView(url_address);
//            } else {
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "jsApiListener--是空值--msg--");
//            }
//            //ViewUitls.method_toWebView_OpenNew();
//
//        } catch (Exception e) {
//            //catch
//            e.printStackTrace();
//        }
//
//    }


//    @JavascriptInterface
//    public void funLocaion(Object msg, CompletionHandler<String> handler) {
//
//        try {
//
//            //do
////            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "funLoginOut---msg-->" + msg);
//            //itchen-->funLoginOut---msg-->{"message":"Token已被顶下线"}
//
//            //JSONObject jsonObject = (JSONObject) msg;
//            //String textMessage = jsonObject.getString(Parameterkey.message);
//
//            //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--value--msg-->" + jsonObject.getString("text"));
//
//            if (jsApiListener != null) {
//                jsApiListener.funLocaion(handler);
//            } else {
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "jsApiListener--是空值--msg--");
//            }
//
//        } catch (Exception e) {
//            //catch
//            e.printStackTrace();
//        }
//
//    }

//    //退出登录的接口和H5对接，他们调用的
//    @JavascriptInterface
//    public void funLoginOut(Object msg, CompletionHandler<String> handler) {
//
//        try {
//            //do
////            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "funLoginOut---msg-->" + msg);
//            //itchen-->funLoginOut---msg-->{"message":"Token已被顶下线"}
//
//            JSONObject jsonObject = (JSONObject) msg;
//
//            String textMessage = jsonObject.getString(Parameterkey.message);
//
//            //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--value--msg-->" + jsonObject.getString("text"));
//
//            if (jsApiListener != null) {
//                jsApiListener.funLoginOut(textMessage);
//            } else {
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "jsApiListener--是空值--msg--");
//            }
//
//        } catch (Exception e) {
//            //catch
//            e.printStackTrace();
//        }
//
//    }

    //应该是还有一个叉号

//    @JavascriptInterface
//    public void setTextRightTopFormWeb(Object msg, CompletionHandler<String> handler) {
//
//        //ToastUtils.make().show("getToken");
//        //handler.complete(msg + "-->itchen");
//
////        LogUtils.d(ConstantSign.LOGCAT_NOMAL + "getTextRightFormWeb---msg-->" + msg);
//
//        //TextRightTopFormWeb textRightTopFormWeb = JSON.parseObject((String) msg, TextRightTopFormWeb.class);
//        //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "textRightTopFormWeb---msg-->" + textRightTopFormWeb);
//
//
//        //TextRightTopFormWeb textRightTopFormWeb = (TextRightTopFormWeb) JSON.parse((String) msg);
//        //TextRightTopFormWeb value = (TextRightTopFormWeb) JSON.toJSON(msg);
//
//        try {
//
//            JSONObject jsonObject = (JSONObject) msg;
//
//            String textRight = jsonObject.getString(Parameterkey.text);
//
//            //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "text--value--msg-->" + jsonObject.getString("text"));
//
//            if (jsApiListener != null) {
//                jsApiListener.setTextRight(textRight);
//            } else {
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "jsApiListener--是空值--msg--");
//            }
//
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//
//
//        //{"text":"巡检记录"}
//
//    }

//    @JavascriptInterface
//    public void getFilesDownLoadUrl(Object msg, CompletionHandler<String> handler) {
//
//        try {
//
//            //JSONObject jsonObject = (JSONObject) msg;
//
//            if (msg != null) {
//
//                //do
//                JSONObject jsonObject = (JSONObject) msg;
//
//                if (jsonObject != null) {
//
//                    String nomalString = jsonObject.toString();
////                    LogUtils.d(ConstantSign.LOGCAT_NOMAL + "getFilesDownLoadUrl-->" + nomalString);
//
//                    FilesDownLoadUrl filesDownLoadUrl = JSON.parseObject(nomalString, FilesDownLoadUrl.class);
////                    LogUtils.d(ConstantSign.LOGCAT_NOMAL + "相册内的jsonObjectItem-转string-->" + filesDownLoadUrl);
//
//                    //itchen-->getFilesDownLoadUrl-->{"url":["http:\/\/222.222.17.184:3377\/dev-private-bucket\/temp\/2023-03-31\/e759764eb8534d149528a31eed2aa059.png"],"type":1}
//                    if (jsApiListener != null) {
//                        jsApiListener.filesDownLoad(filesDownLoadUrl, handler);
//                    }
//
//                }
//
//            } else {
//                ToastUtils.showShort("响应出错-msg为空");
//            }
//
//
//        } catch (Exception e) {
//            //catch
////            LogUtils.d(ConstantSign.LOGCAT_NOMAL + e.getLocalizedMessage());
//            //Value album at 0 of type java.lang.String cannot be converted to JSONObject
//            e.printStackTrace();
//        }
//
//    }

//    @JavascriptInterface
//    public void setCameraOrAlbumOrVideo(Object msg, CompletionHandler<String> handler) {
//
////        LogUtils.d(ConstantSign.LOGCAT_NOMAL + "setCameraOrAlbumOrVideo---msg-->" + msg);
//        //{"count":1,"mediaType":["image","video"],"sourceType":["album","camera"],"upload":1}
//        //{"count":1,"mediaType":["image","video"],"sourceType":["album","camera"],"upload":1}
//
//        try {
//
//            //JSONObject jsonObject = (JSONObject) msg;
//            //String jsonString = (String) msg;
//
//            //String JSONstringValue =  JSON.toJSONString(jsonObject);
//            // LogUtils.d(ConstantSign.LOGCAT_NOMAL+"JSONstringValue-->"+JSONstringValue);
//            // CameraOrAlbumOrVideo cameraOrAlbumOrVideo = JSON.parseObject(JSONstringValue,CameraOrAlbumOrVideo.class);
//
//            if (msg != null) {
//
//                //do
//                JSONObject jsonObject = (JSONObject) msg;
//
//                if (jsonObject != null) {
//                    String nomalString = jsonObject.toString();
////                    LogUtils.d(ConstantSign.LOGCAT_NOMAL + "nomalString-->" + nomalString);
//                    //itchen-->nomalString-->{"count":9,"mediaType":["image"],"sourceType":["album"],"original":1,"upload":2}
//                    //{"count":1,"mediaType":["image","video"],"sourceType":["album","camera"],"upload":1}
//                    CameraOrAlbumOrVideo cameraOrAlbumOrVideo = JSON.parseObject(nomalString, CameraOrAlbumOrVideo.class);
////                    LogUtils.d(ConstantSign.LOGCAT_NOMAL + "相册内的jsonObjectItem-转string-->" + cameraOrAlbumOrVideo);
//                    //CameraOrAlbumOrVideo{count=1, upload=1, sourceType=[album, camera], mediaType=[image, video]}
//                    //CameraOrAlbumOrVideo{count=9, upload=2, sourceType=[album], mediaType=[image]}
//
//                    if (jsApiListener != null) {
//                        jsApiListener.setCameraOrAlbumOrVideo(cameraOrAlbumOrVideo, handler);
//                    }
//
//                }
//
////            //上传几张图片；
////            int count = jsonObject.getInt(Parameterkey.count);
////            //是上传还是转换为base64;
////            int upload = jsonObject.getInt(Parameterkey.upload);
////            //图片资源的类型，是相机、相册、或者录入视频
////            JSONArray jsonArrayMediaType = jsonObject.getJSONArray(Parameterkey.mediaType);
////            JSONArray jsonArraySourceType = jsonObject.getJSONArray(Parameterkey.sourceType);
////
////            //转换资源类型
////            ArrayList<String> jsonArrayMediaTypeList = new ArrayList<>();
////
////            for (int index = 0; index < jsonArraySourceType.length(); index++) {
////
////                JSONObject jsonObjectItem = jsonArraySourceType.getJSONObject(index);
////
////                if (jsonObjectItem != null) {
////                    jsonArrayMediaTypeList.add(jsonObjectItem.toString());
////                }
////
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "jsonObjectItem-转string-->" + jsonObjectItem.toString());
////
////            }
////
////            ArrayList<String> jsonArraySourceTypeList = new ArrayList<>();
////            //转换 资源类型--是相册内的
////            for (int index = 0; index < jsonArraySourceType.length(); index++) {
////
////                JSONObject jsonObjectItem = jsonArraySourceType.getJSONObject(index);
////
////                if (jsonObjectItem != null) {
////                    jsonArraySourceTypeList.add(jsonObjectItem.toString());
////                }
////
////                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "相册内的jsonObjectItem-转string-->" + jsonObjectItem.toString());
////
////            }
//
//                //直接传递对象给H5
////            CameraOrAlbumOrVideo cameraOrAlbumOrVideo = new CameraOrAlbumOrVideo();
////            cameraOrAlbumOrVideo.setCount(count);
////            cameraOrAlbumOrVideo.setUpload(upload);
////            cameraOrAlbumOrVideo.setMediaType(jsonArrayMediaTypeList);
////            cameraOrAlbumOrVideo.setSourceType(jsonArraySourceTypeList);
//            } else {
//                ToastUtils.showShort(R.string.jstoasterror);
//            }
//
//
//        } catch (Exception e) {
//            //catch
////            LogUtils.d(ConstantSign.LOGCAT_NOMAL + e.getLocalizedMessage());
//            //Value album at 0 of type java.lang.String cannot be converted to JSONObject
//            //Only the original thread that created a view hierarchy can touch its views.
//            e.printStackTrace();
//        }
//
//    }


//    @JavascriptInterface
//    public void getTokenForWeb(Object msg, CompletionHandler<String> handler) {
//
//        //ToastUtils.make().show("getToken");
//        //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "getToken->");
//
//        HttpEntitySK<String> httpEntitySK = new HttpEntitySK<>();
//        httpEntitySK.setData(Session.get(Utils.getApp()).getToken());
//        httpEntitySK.setCode(ConstantSign.DS_JS_CODE);
//        httpEntitySK.setMsg(ConstantSign.DS_JS_MSG);
//
//        handler.complete(JSON.toJSONString(httpEntitySK));
//
////        LogUtils.d(ConstantSign.LOGCAT_NOMAL + "getToken->" + JSON.toJSONString(httpEntitySK));
//
//    }


//    @JavascriptInterface
////    public void buttonBuyNow(Object msg, Object obj, CompletionHandler<String> handler) {
//    public void buttonBuyNow(Object msg, CompletionHandler<String> handler) {
//        ToastUtils.make().show("执行立即购买");
////        LogUtils.d(ConstantSign.LOGCAT_NOMAL + "点击立即购买");
//        handler.complete(msg + " [ asyn call]");
//    }

//    @JavascriptInterface
//    public void testAsyn(Object msg, CompletionHandler<String> handler) {
//        handler.complete(msg + " [ asyn call itchen]");
//    }

//    @JavascriptInterface
//    public String testNoArgSyn(Object arg) throws JSONException {
//        return "testNoArgSyn called [ syn call]";
//    }

//    @JavascriptInterface
//    public void testNoArgAsyn(Object arg, CompletionHandler<String> handler) {
//        handler.complete("testNoArgAsyn   called [ asyn call]");
//    }


    //@JavascriptInterface
    //without @JavascriptInterface annotation can't be called
//    public String testNever(Object arg) throws JSONException {
//        JSONObject jsonObject = (JSONObject) arg;
//        return jsonObject.getString("msg") + "[ never call]";
//    }

//    @JavascriptInterface
//    public void callProgress(Object args, final CompletionHandler<Integer> handler) {
//
//        new CountDownTimer(11000, 1000) {
//            int i = 10;
//
//            @Override
//            public void onTick(long millisUntilFinished) {
//                //setProgressData can be called many times util complete be called.
//                handler.setProgressData((i--));
//
//            }
//
//            @Override
//            public void onFinish() {
//                //complete the js invocation with data; handler will be invalid when complete is called
//                handler.complete(0);
//
//            }
//        }.start();
//    }
}